
#ifndef __HOOK_SHELL32_H__
#define __HOOK_SHELL32_H__

#include "base.h"
#include <shellapi.h>
#include <shlobj.h>
int Hook_Shell32();
int UnHook_Shell32();


BOOL STDAPICALLTYPE HOOK_ShellExecuteExW(_Inout_ SHELLEXECUTEINFOW* pExecInfo);
typedef BOOL (STDAPICALLTYPE* PFN_ShellExecuteExW)(_Inout_ SHELLEXECUTEINFOW* pExecInfo);
extern PFN_ShellExecuteExW REAL_ShellExecuteExW;

HRESULT STDAPICALLTYPE HOOK_SHOpenFolderAndSelectItems(_In_ PCIDLIST_ABSOLUTE pidlFolder, 
    UINT cidl, _In_reads_opt_(cidl) PCUITEMID_CHILD_ARRAY apidl, DWORD dwFlags);
typedef HRESULT (STDAPICALLTYPE* PFN_SHOpenFolderAndSelectItems)(_In_ PCIDLIST_ABSOLUTE pidlFolder, 
    UINT cidl, _In_reads_opt_(cidl) PCUITEMID_CHILD_ARRAY apidl, DWORD dwFlags);
extern PFN_SHOpenFolderAndSelectItems REAL_SHOpenFolderAndSelectItems;

#endif